package kivuli.visao.item;

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.net.URL;
import javax.swing.ImageIcon;
import kivuli.entidade.Arvore;
import kivuli.entidade.Figura;
import kivuli.visao.popup.PopupArvore;

public class ItemArvore extends ItemDeDesenho {

    private static final URL PATH_IMAGEM
            = ItemDeDesenho.class.getResource("/resources/images/arvore.jpg");
    private final ImageIcon image;

    public ItemArvore(Arvore arvore) {
        super(arvore);
        image = new ImageIcon(PATH_IMAGEM);
        initComponents();
    }

    private void initComponents() {
        Arvore arvore = (Arvore) getFigura();
        this.setSize(arvore.getDiametroCopa() + 1,
                arvore.getDiametroCopa() + 1);
        this.setComponentPopupMenu(new PopupArvore(this));
    }

    @Override
    public void setFigura(Figura figura) {
        super.setFigura(figura);
        if (figura != null && figura instanceof Arvore) {
            Arvore arvore = (Arvore) figura;
            this.setSize(arvore.getDiametroCopa() + 1,
                    arvore.getDiametroCopa() + 1);
        }
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Arvore figura = (Arvore) getFigura();
        setLocation(figura.getX(), figura.getY());

        Graphics2D g2d = (Graphics2D) g.create();
        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                RenderingHints.VALUE_ANTIALIAS_ON);

        int diametro = figura.getDiametroCopa();
        g2d.drawOval(0, 0, diametro, diametro);
        g2d.drawImage(image.getImage(),
                (diametro - (int) (diametro * 0.35)) / 2,
                (diametro - (int) (diametro * 0.35)) / 2,
                (int) (diametro * 0.35),
                (int) (diametro * 0.35),
                null);
        g2d.dispose();
    }

}
